/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package persistencia;

import java.sql.*;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.Iterator;
import java.util.Vector;
import modelo.Exercicio;
import modelo.Receita;

/**
 *
 * @author aldiene
 */
public class ReceitaDAO {
    
    

    //salva dados do usuario no banco
    public static boolean salvar(Receita receita) {
      boolean retorno = false;
        try {
            Connection con = Conexao.getConexao();
            PreparedStatement stmt =
                    con.prepareStatement("insert into \n" +
                    "RECEITA (DESCRICAO,DATA,VALOR,ID_EXERCICIO  ) values (?, ?, ?, ?)");
            stmt.setString(1, receita.getDescricao());
            java.util.Date dataUtil = receita.getData();
            java.sql.Date dataSql = new java.sql.Date(dataUtil.getTime());
            stmt.setDate(2, dataSql);
             stmt.setFloat(3, receita.getValor());
            Exercicio exercicio = receita.getExercicio();
           stmt.setInt(4, exercicio.getId_exercicio());
           
           //stmt.setDate(3, new java.sql.Date(receita.getData().getTime()));
           
          stmt.executeUpdate();
            retorno = true;

        } catch (SQLException ex) {
            System.err.println(ex);
           
        } finally {
            System.out.println();
            Conexao.desconecta();
        }
         return retorno;
}
    //LISTA VARIAS RECEITAS
     public Vector getReceitas() {

        Vector vp = new Vector();

        try {
            Connection con = Conexao.getConexao();
            Statement stmt =
                    con.createStatement();
            String query = ("select * from RECEITA");
            ResultSet rs = stmt.executeQuery(query);
            while (rs.next()) {
                Receita receita = new Receita();

                receita.setId(Integer.parseInt(rs.getString("ID_RECEITA")));
                receita.setDescricao(rs.getString("DESCRICAO"));
                receita.setValor(rs.getFloat("VALOR"));
                receita.setData(rs.getDate("DATA"));
               
                vp.add(receita);
            }
            Conexao.desconecta();
        } catch (SQLException ex) {
            System.out.println("Problemas com o BD:");
            ex.printStackTrace();
        }
        return vp;
    }
   
      public void excluir(int id_receita) {

        try {
            Connection con = Conexao.getConexao();
            Statement stmt = con.createStatement();

            String query = "delete from RECEITA where ID_RECEITA = " + id_receita;
          
            stmt.executeUpdate(query);
       
        } catch (SQLException ex) {
            System.err.println(ex);
        
        } finally {
            Conexao.desconecta();

        }

    }

      //RECUPERA CAMPOS DA RECEITA
    public Receita getRecuperar(int id_receita) {
        Receita receita = new Receita();
        Exercicio exercicio =new Exercicio();

        try {
            Connection con = Conexao.getConexao();
            Statement stmt =
                    con.createStatement();
            String query = ("select * from RECEITA where ID_RECEITA=" + id_receita);
            //String query = ("select * from RECEITA where ID_EXERCICIO=" +exercicio);
            ResultSet rs = stmt.executeQuery(query);
            while (rs.next()) {
                receita.setId(Integer.parseInt(rs.getString("ID_RECEITA")));
                receita.setDescricao(rs.getString("DESCRICAO"));
                receita.setValor(rs.getFloat("VALOR"));
                receita.setData(rs.getDate("DATA"));
            }
            con.close();
        } catch (SQLException ex) {
            System.out.println("Problemas com o BD:");
            ex.printStackTrace();
        }
        return receita;
    }
    
    public void alterar(Receita receita) {
        boolean retorno = false;
      try {
            Connection con = Conexao.getConexao();
            PreparedStatement stmt = con.prepareStatement("UPDATE RECEITA SET " +
                    "  DESCRICAO= '" + receita.getDescricao() + "'" +
                    ", DATA= '" + receita.getData()  + "'" +
                    ", VALOR= '" + receita.getValor() + "'" +
                    " WHERE ID_RECEITA = " + receita.getId());
            stmt.executeUpdate();
            con.close();
        } catch (SQLException e) {
            System.out.println("Problemas com o BD:");
            e.printStackTrace();
        }
    }    

    public static void main(String[] args) {
        //Exercicio id_exercicio = null;
        String descricao = "DESCRICAO";
        Date data = null;
        float valor = 5;
        
        
        Receita receita = new Receita(descricao, valor, data);
        receita.setId(2);

        ReceitaDAO a = new ReceitaDAO();
        a.alterar(receita);
        Vector v = a.getReceitas();
        Iterator it = v.iterator();

        while (it.hasNext()) {
            Receita p = (Receita) it.next();
            System.out.println(p);
        }
        v = a.getReceitas();
        it = v.iterator();
      }
    
}